// 引入express 并且创建路由级别的服务器
const express = require('express');
const path = require('path');
const fs = require('fs');
let router = express.Router()

// 第一步：下载并引入
const formidable = require('formidable');

const timeStamp=require("time-stamp")







// 创建路由

// 渲染注册页面
router.get("/register", (req, res) => {

    let filepath = path.join(__dirname, "../views/register.html")
    res.sendFile(filepath)
})


// 处理注册请求
router.post("/register", (req, res, next) => {

    //第二步： 设置临时上传目录
    let form = formidable({
        uploadDir: path.join(__dirname, "../temp")
    })


    // 第三步：解析表单数据
    form.parse(req, (err, fields, files) => {
        // 在这里才可以接收到文件数据和账号密码数据

        if (err) {
            next("文件上传失败")
            return
        }

        // 验证账号密码---------------------
        // console.log(fields);//{ username: 'zs', password: '1231' }
        let { username, password, password2 } = fields

        // 每一项都不能为空
        //如果 username 为空   !username 为true
        if (!username || !password || !password2) {
            next("请传递必要的参数")
            return
        }

        // 两次输入的密码必须一致
        if (password != password2) {
            next("两次输入的密码不一致")
            return
        }


        // 读取persons.json里面的内容，进行账号密码验证
        let filepath = path.join(__dirname, "../data/persons.json")
        let user = JSON.parse(fs.readFileSync(filepath, "utf-8"))


        // 把用户提交过来的数据和user数据进行对比
        let index= user.findIndex( item=>{
            return username==item.username 
        })

        if(index !=-1 ){
            next("此用户名已被注册")
            return
        }

        
        // 验证账号密码---------------------



        // 第四步：处理上传过来的文件---------------
        // 旧路径
        let oldpath = files.touxiang.filepath

        // 新名字
        let newfilename = files.touxiang.originalFilename

        // 新文件夹
        let newdir = path.join(__dirname, "../uploads/heads")

        // 新路径
        let newpath = path.join(newdir, newfilename)


        // 移动文件
        fs.renameSync(oldpath, newpath)
        //处理上传过来的文件----------------------------





        // 执行注册
        let time=timeStamp("YYYY年MM月DD日 HH:mm:ss")
        user.push( { username,password,time,url:newpath}  )


        // 把user在再重新写入persons.json
        fs.writeFileSync(filepath, JSON.stringify(user) )



        res.send({
            status:200,
            msg:"注册成功",
            url: newpath
        })

    })
})


module.exports = router


/* 
files:
{
    "touxiang": {
        "size": 78562,
        "filepath": "C:\\Users\\IBM\\Desktop\\软件学院20211025\\day13\\代码\\01登录注册文件上传作业\\temp\\8cf0161b52db4e260ac92b400",
        "newFilename": "8cf0161b52db4e260ac92b400",
        "mimetype": "image/jpeg",
        "mtime": "2022-04-27T01:51:39.953Z",
        "originalFilename": "20220426151534508.jpg"
    }
}




*/